package com.adams.sys.parameter.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import com.adams.access.db.bean.Parameter;
import com.adams.encache.mechanism.CacheUtil;
import com.adams.sys.parameter.dao.ParameterDao;
import com.adams.sys.parameter.service.ParameterService;
import com.adams.utils.Page;

/**
 * 
 * 
 * File Name : ParameterServiceImpl.java
 * 
 * @Description : 参数服务类,提供参数的增、删、改和查功能
 * @author 902990封文进
 */
@Service("parameterService")
@Transactional
public class ParameterServiceImpl implements ParameterService
{

	@Autowired
	private ParameterDao parameterDao;

	/**
	 * 
	 * Description : 设置参数数据操作接口
	 * 
	 * @param parameterDao
	 * 
	 */
	public void setParameterDao(ParameterDao parameterDao)
	{
		this.parameterDao = parameterDao;
	}

	/**
	 * 
	 * Description : 创建参数
	 * 
	 * @param parameter
	 * 
	 */
	@Transactional(rollbackFor = java.lang.Exception.class)
	public void createParameter(Parameter parameter)
	{
		parameter.setVersion(1);
		parameterDao.save(parameter);
		CacheUtil.clearCacheByClass(Parameter.class);
	}

	/**
	 * 
	 * Description : 更新参数
	 * 
	 * @param parameter
	 * 
	 */
	@Transactional(rollbackFor = java.lang.Exception.class)
	public void updateParameter(Parameter parameter)
	{
		parameterDao.update(parameter);
		CacheUtil.clearCacheByClass(Parameter.class);
	}

	/**
	 * 
	 * Description : 删除参数
	 * 
	 * @param parameter
	 * 
	 */
	@Transactional(rollbackFor = java.lang.Exception.class)
	public void deleteParameter(Parameter parameter)
	{
		parameterDao.delete(parameter);
		CacheUtil.clearCacheByClass(Parameter.class);
	}

	/**
	 * 
	 * Description : 根据编号查询参数
	 * 
	 * @param id
	 * @return Parameter
	 * 
	 */
	@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
	public Parameter queryById(Long id)
	{
		return parameterDao.get(id);
	}

	/**
	 * 
	 * Description : 根据名称查询参数
	 * 
	 * @param name
	 * @return List<Parameter>
	 * 
	 */
	@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
	public List<Parameter> queryByName(String name)
	{
		return parameterDao.queryByName(name);
	}

	/**
	 * 
	 * Description : 根据参数类型和参数名称查询参数
	 * 
	 * @param type
	 * @param name
	 * @return Parameter
	 * 
	 */
	@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
	public Parameter queryByTypeAndName(String type, String name)
	{
		return parameterDao.queryByTypeAndName(type, name);
	}

	/**
	 * 
	 * Description : 根据分页查询参数
	 * 
	 * @param page
	 * @return Page<Parameter>
	 * 
	 */
	@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
	public Page<Parameter> queryAllByPage(Page<Parameter> page)
	{
		return parameterDao.queryAllByPage(page);

	}

}
